package com.sg.dto.biz.bff.common;

import com.wicket.okrbff.common.annotations.TreeType;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * @desc BffEvaObjTargetCycleReportDto
 * @使用场景
 */
@Data
public class BffEvaObjTargetCycleReportDto implements Serializable {

    /**
     * 周期阶段资料记录ID
     */
    @TreeType("id")
    @ApiModelProperty("周期阶段资料记录ID")
    private String cycleStageDataId;

    /**
     * 被评对象目标周期ID
     */
    @ApiModelProperty("被评对象目标周期ID")
    private String evaObjTargetCycleId;

    /**
     * 虚拟组织下部门ID
     */
    @ApiModelProperty("牵头部门ID")
    private String deptId;

    /**
     * 组织内部门身份名称
     */
    @ApiModelProperty("牵头部门身份")
    private String virtualOrgDeptStatus;

    /**
     * 部门简称
     */
    @ApiModelProperty("牵头部门简称")
    private String deptShortName;

    /**
     * 虚拟组织成员就职记录ID
     */
    @ApiModelProperty("责任人就职记录ID")
    private String virtualOrgInductionRecordId;

    /**
     * 组内职务名称
     */
    @ApiModelProperty("责任人职务")
    private String virtualOrganizationPosition;

    /**
     * 个人账号ID
     */
    @ApiModelProperty("个人账号ID")
    private String userId;

    /**
     * 真实头像
     */
    @ApiModelProperty("真实头像")
    private String userFace;

    /**
     * 真实姓名
     */
    @ApiModelProperty("真实姓名")
    private String idCardName;

    /**
     * 用户昵称
     */
    @ApiModelProperty("用户昵称")
    private String nickName;

    /**
     * 目标周期简称
     */
    @ApiModelProperty("目标周期简称")
    private String cyclelAlias;

    /**
     * 周期名称
     */
    @ApiModelProperty("周期名称")
    private String cycleStandardName;

    /**
     * 周期类型实例简称
     */
    @ApiModelProperty("周期类型实例简称")
    private String cycleNumberShortName;

    /**
     * 实际值
     */
    @ApiModelProperty("实际值")
    private Double actualValue;

    /**
     * 实际值单位 INDIVIDUAL:个 DOOR:门 TERM:项 PIECE:篇 YUAN:元 FEN:分 WAN_YUAN:万元 PERCENT:百分率
     */
    @ApiModelProperty("实际值单位")
    private String actualValueUnit;

    /**
     * 诊断值
     */
    @ApiModelProperty("诊断值")
    private Double targetDiagnosticValue;

    /**
     * 进度值
     */
    @ApiModelProperty("进度值")
    private Double progressValue;

    /**
     * 进度值单位 INDIVIDUAL:个 DOOR:门 TERM:项 PIECE:篇 YUAN:元 FEN:分 WAN_YUAN:万元 PERCENT:百分率
     */
    @ApiModelProperty("进度值单位")
    private String progressValueUnit;

    /**
     * 进度较上次增降幅
     */
    @ApiModelProperty("进度较上次增降幅")
    private Double progressFromLastRatio;

    /**
     * 进度较上次增降幅单位 INDIVIDUAL:个 DOOR:门 TERM:项 PIECE:篇 YUAN:元 FEN:分 WAN_YUAN:万元 PERCENT:百分率
     */
    @ApiModelProperty("进度较上次增降幅单位")
    private String progressFromLastRatioUnit;

    /**
     * 达成度
     */
    @ApiModelProperty("达成度")
    private Double reach;

    /**
     * 达成度单位 INDIVIDUAL:个 DOOR:门 TERM:项 PIECE:篇 YUAN:元 FEN:分 WAN_YUAN:万元 PERCENT:百分率
     */
    @ApiModelProperty("达成度单位")
    private String reachUnit;

    /**
     * 达成度较上次增降福
     */
    @ApiModelProperty("达成度较上次增降福")
    private Double actualFromLastTimeRatio;

    /**
     * 达成度较上次增降福单位 INDIVIDUAL:个 DOOR:门 TERM:项 PIECE:篇 YUAN:元 FEN:分 WAN_YUAN:万元 PERCENT:百分率
     */
    @ApiModelProperty("达成度较上次增降福单位")
    private String actualFromLastTimeRatioUnit;

    /**
     * 实时得分
     */
    @ApiModelProperty("实时得分")
    private Double realTimeScore;

    /**
     * 实时得分单位
     */
    @ApiModelProperty("实时得分单位")
    private String realTimeScoreUnit;

    /**
     * 权重
     */
    @ApiModelProperty("权重")
    private Double weightValue;

    /**
     * 权重分值
     */
    @ApiModelProperty("权重分值")
    private Double weightScore;

    /**
     * 资料文字概要
     */
    @ApiModelProperty("资料文字概要")
    private String textSummaryData;

    /**
     * 操作时间
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;
    /**
     * 关联目标内容类型编码 TARGET:目标 TARGET_CATEGORY:目标分类 OBJECTIVE:指标
     */
    @ApiModelProperty("关联目标内容类型编码")
    private String targetCycleContentTypeCode;

    /**
     * 关联目标内容ID
     */
    @ApiModelProperty("关联目标内容ID")
    private String targetCycleContentId;
    /**
     * 周期ID
     */
    @ApiModelProperty("周期ID")
    private String cycleId;
    /**
     * 是否过程周期阶段 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否过程周期阶段")
    private String isProcessCycleStage;

    /**
     * 任务实际开始时间
     */
    @ApiModelProperty("任务实际开始时间")
    private Date actualStartTime;

    /**
     * 进度较上次变化值
     */
    @ApiModelProperty("进度较上次变化值")
    private Double fromLastProgressValue;

    /**
     * 进度较上次变化值单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:百分率 PORTION:份
     */
    @ApiModelProperty("进度较上次变化值单位")
    private String fromLastProgressValueUnit;

    /**
     * 较上次目标变化值
     */
    @ApiModelProperty("较上次目标变化值")
    private Double changeFromLastTarget;

    /**
     * 较上次目标变化值单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:百分率 PORTION:份
     */
    @ApiModelProperty("较上次目标变化值单位")
    private String changeFromLastTargetUnit;

    /**
     * 较上次目标增降幅
     */
    @ApiModelProperty("较上次目标增降幅")
    private Double fromLastTargetLiftRatio;

    /**
     * 较上次目标增降幅单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:百分率 PORTION:份
     */
    @ApiModelProperty("较上次目标增降幅单位")
    private String fromLastTargetLiftRatioUnit;

    /**
     * 达成度较上次变化值
     */
    @ApiModelProperty("达成度较上次变化值")
    private Double fromLastReach;

    /**
     * 达成度较上次变化值单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:百分率 PORTION:份
     */
    @ApiModelProperty("达成度较上次变化值单位")
    private String fromLastReachUnit;

    /**
     * 汇报得分（数值）
     */
    @ApiModelProperty("汇报得分（数值）")
    private Double reportScoreValue;

    /**
     * 汇报得分单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:百分率 PORTION:份
     */
    @ApiModelProperty("汇报得分单位")
    private String reportScoreUnit;

    /**
     * 实际得分（数值）
     */
    @ApiModelProperty("实际得分（数值）")
    private Double actualScoreValue;

    /**
     * 实际得分单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:百分率 PORTION:份
     */
    @ApiModelProperty("实际得分单位")
    private String actualScoreUnit;
    /**
     * 汇报得分（文本）
     */
    @ApiModelProperty("汇报得分（文本）")
    private String reportScore;

    /**
     * 实际得分（文本）
     */
    @ApiModelProperty("实际得分（文本）")
    private String actualScore;
    /**
     * 展示目标值
     */
    @ApiModelProperty("展示目标值")
    private Double showTargetValue;

    /**
     * 冗余单位
     */
    @ApiModelProperty("展示目标值单位")
    private String unit;
    /**
     * 周期结束时间
     */
    @ApiModelProperty("执行周期阶段周期结束时间")
    private Date cycleEndTime;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        BffEvaObjTargetCycleReportDto that = (BffEvaObjTargetCycleReportDto) o;
        return cycleStageDataId == that.cycleStageDataId && evaObjTargetCycleId == that.evaObjTargetCycleId && deptId == that.deptId && virtualOrgDeptStatus == that.virtualOrgDeptStatus && deptShortName == that.deptShortName && virtualOrgInductionRecordId == that.virtualOrgInductionRecordId && virtualOrganizationPosition == that.virtualOrganizationPosition && userId == that.userId && userFace == that.userFace && idCardName == that.idCardName && nickName == that.nickName && cyclelAlias == that.cyclelAlias && cycleStandardName == that.cycleStandardName && cycleNumberShortName == that.cycleNumberShortName && actualValue == that.actualValue && actualValueUnit == that.actualValueUnit && targetDiagnosticValue == that.targetDiagnosticValue && progressValue == that.progressValue && progressValueUnit == that.progressValueUnit && progressFromLastRatio == that.progressFromLastRatio && progressFromLastRatioUnit == that.progressFromLastRatioUnit && reach == that.reach && reachUnit == that.reachUnit && actualFromLastTimeRatio == that.actualFromLastTimeRatio && actualFromLastTimeRatioUnit == that.actualFromLastTimeRatioUnit && realTimeScore == that.realTimeScore && realTimeScoreUnit == that.realTimeScoreUnit && weightValue == that.weightValue && weightScore == that.weightScore && textSummaryData == that.textSummaryData && operateTime == that.operateTime && targetCycleContentTypeCode == that.targetCycleContentTypeCode && targetCycleContentId == that.targetCycleContentId && cycleId == that.cycleId && isProcessCycleStage == that.isProcessCycleStage && actualStartTime == that.actualStartTime && fromLastProgressValue == that.fromLastProgressValue && fromLastProgressValueUnit == that.fromLastProgressValueUnit && changeFromLastTarget == that.changeFromLastTarget && changeFromLastTargetUnit == that.changeFromLastTargetUnit && fromLastTargetLiftRatio == that.fromLastTargetLiftRatio && fromLastTargetLiftRatioUnit == that.fromLastTargetLiftRatioUnit && fromLastReach == that.fromLastReach && fromLastReachUnit == that.fromLastReachUnit && reportScoreValue == that.reportScoreValue && reportScoreUnit == that.reportScoreUnit && actualScoreValue == that.actualScoreValue && actualScoreUnit == that.actualScoreUnit && reportScore == that.reportScore && actualScore == that.actualScore && showTargetValue == that.showTargetValue && unit == that.unit && cycleEndTime == that.cycleEndTime;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), cycleStageDataId, evaObjTargetCycleId, deptId, virtualOrgDeptStatus, deptShortName, virtualOrgInductionRecordId, virtualOrganizationPosition, userId, userFace, idCardName, nickName, cyclelAlias, cycleStandardName, cycleNumberShortName, actualValue, actualValueUnit, targetDiagnosticValue, progressValue, progressValueUnit, progressFromLastRatio, progressFromLastRatioUnit, reach, reachUnit, actualFromLastTimeRatio, actualFromLastTimeRatioUnit, realTimeScore, realTimeScoreUnit, weightValue, weightScore, textSummaryData, operateTime, targetCycleContentTypeCode, targetCycleContentId, cycleId, isProcessCycleStage, actualStartTime, fromLastProgressValue, fromLastProgressValueUnit, changeFromLastTarget, changeFromLastTargetUnit, fromLastTargetLiftRatio, fromLastTargetLiftRatioUnit, fromLastReach, fromLastReachUnit, reportScoreValue, reportScoreUnit, actualScoreValue, actualScoreUnit, reportScore, actualScore, showTargetValue, unit, cycleEndTime);
    }

}
